Stream Result 유형에 대한 설정 :: 스트럿츠2버젼[SSISO Community]
 
SSISO 카페 SSISO Source SSISO 구직 SSISO 쇼핑몰 SSISO 맛집
추천검색어 : JUnit   Log4j   ajax   spring   struts   struts-config.xml   Synchronized   책정보   Ajax 마스터하기   우측부분

스트럿츠2버젼
[1]
등록일:2008-03-16 12:08:24 (0%)
작성자:
제목:Stream Result 유형에 대한 설정
Stream을 response로 응답하게 Result 활용하기

















































































































































































































































경우에 따라서, action에 대한 응답을 stream을 받고자 하는 경우가 있다. 예를 들어서 특정 파일을 다운로드 받고자
하는 경우에 이에 속한다고 할 수 있다. 이 경우에 result에 대한 일반적인 dispatch가 아닌 stream 타입을 사용하게
된다. 이 타입에 대한 간단한 사용법을 정리하면 다음과 같습니다.

우선 상황은 이렇습니다. 특정 이미지 파일을 png 타입으로 다운로드를 받고자 합니다. 일반적인 페이지에서
a 태그를 사용해서 이미지 url을 걸게 되면, 해당 파일은 다운로드가 되지 않고 브라우저에 의해 열리게 됩니다.
이를 다운로드 받게 하기 위해서 해당 이미지에 대한 stream 제공화 함께 http response 상에 header 값을 조작해야
합니다. 이러한 작업을 위해서 우리는 download라는 action을 아래와 같이 정의합니다.












위와 같이 result에 대해서 type을 stream으로 정의하게 됩니다. 이 때 주의할 점은 http response에 대한 header를
바로 result 안에서 설정하게 됩니다. 만약 이를 action 내 method에서 정의를 하는 경우에는 중복되어 정의가 되게
됩니다. 실제로 기본 실행 method인 execute 함수에서 response.setHeader(...) 함수를 contentDisposition 값을
지정하고 동작하기를 기대했었지만, 재미있게도 해당 header값이 중복 설정되는 현상이 발생되었습니다. 이 문제로
얼마나 삽질을 했었던지 >,.<

골자는 위와 같은 상황에서는 result 유형을 stream 유형으로 지정하시고 해당 stream에 대한 header setting은 바로
이 곳에서 처리를 하게 됩니다.

이제 실제 action class에 대해서 알아봅시다. 이와 관련된 코드가 바로 위 result 내부의 inputName 인자입니다. 본
값에는 action class 내부 변수로 존재하는 InputStream 객체에 대한 변수 이름입니다. 이는 다시 말하면, stream
result를 동작하게 하기 위해서, 스트러츠가 연계해야 할 InputStream 객체가 변수로 준비되어야 하는 것입니다.

위 result 정의에서는 InputName을 theInputStreamForImage라고 명명했습니다. 그럼 이제 이에 해당 하는 action
클래스 코드를 보도록 합시다.









위 코드에 구현된 것과 같이 우리는 아까 result에 기록한 inputName에 합치하는 이름의 InputStream을 내부 인자로
정의를 했습니다. 이제 나머지 할 행동은 action method에 해당 InputStream을 적절히 초기화 시켜주는 작업만
남아있습니다. 이거야 스트러츠와 관계 없는 부분이기 때문에 생략합니다.

여기까지가 간단하게 stream 타입의 result 활용법이었습니다.

[본문링크] Stream Result 유형에 대한 설정
[1]
코멘트(이글의 트랙백 주소:/cafe/tb_receive.php?no=2785
작성자
비밀번호

 

SSISOCommunity

[이전]

Copyright byCopyright ⓒ2005, SSISO Community All Rights Reserved.